package org.iartisan.maven.plugin.command;

import org.iartisan.maven.plugin.handle.CommandExecutor;
import org.iartisan.maven.plugin.mavenconfig.*;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.iartisan.maven.plugin.template.TemplateParse;

/**
 * 所有都要生成
 *
 * @author King
 * @version 1.0
 */
@Mojo(name = "all")
public class AllExecuteCommand extends AbstractMojo {

    @Parameter
    private BaseConfig baseConfig;

    @Parameter
    private PackageConfig serviceConfig;

    @Parameter
    private DataSourceConfig dataSourceConfig;

    @Parameter
    private TableConfig tableConfig;

    @Parameter
    private PackageConfig controllerConfig;

    @Parameter
    private PackageConfig htmlPageConfig;

    @Parameter
    private DaoPackageConfig daoConfig;

    @Parameter
    private TemplateConfig templateConfig;

    public BaseConfig getBaseConfig() {
        return baseConfig;
    }

    public void setBaseConfig(BaseConfig baseConfig) {
        this.baseConfig = baseConfig;
    }

    public PackageConfig getServiceConfig() {
        return serviceConfig;
    }

    public void setServiceConfig(PackageConfig serviceConfig) {
        this.serviceConfig = serviceConfig;
    }

    public DataSourceConfig getDataSourceConfig() {
        return dataSourceConfig;
    }

    public void setDataSourceConfig(DataSourceConfig dataSourceConfig) {
        this.dataSourceConfig = dataSourceConfig;
    }

    public TableConfig getTableConfig() {
        return tableConfig;
    }

    public void setTableConfig(TableConfig tableConfig) {
        this.tableConfig = tableConfig;
    }

    public PackageConfig getControllerConfig() {
        return controllerConfig;
    }

    public void setControllerConfig(PackageConfig controllerConfig) {
        this.controllerConfig = controllerConfig;
    }

    public DaoPackageConfig getDaoConfig() {
        return daoConfig;
    }

    public void setDaoConfig(DaoPackageConfig daoConfig) {
        this.daoConfig = daoConfig;
    }

    public TemplateConfig getTemplateConfig() {
        return templateConfig;
    }

    public void setTemplateConfig(TemplateConfig templateConfig) {
        this.templateConfig = templateConfig;
    }

    public PackageConfig getHtmlPageConfig() {
        return htmlPageConfig;
    }

    public void setHtmlPageConfig(PackageConfig htmlPageConfig) {
        this.htmlPageConfig = htmlPageConfig;
    }

    private TemplateParse templateParse = new TemplateParse();

    public void execute() throws MojoExecutionException {
        CommandExecutor commandExecutor = new CommandExecutor(templateConfig, baseConfig, dataSourceConfig, tableConfig, daoConfig, serviceConfig, controllerConfig, htmlPageConfig);
        commandExecutor.execute("all");
    }
}
